#ifndef QUAD_SCHEME_GAUSS_HEX_HPP_
#define QUAD_SCHEME_GAUSS_HEX_HPP_

namespace QuadScheme {

struct GaussHex {

  static constexpr int dim = 3;

  static constexpr int maxDegree = 3;

  static constexpr double w[]{
      // 1
      8.0,
      // 2
      1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000, 1.0000000000,
      1.0000000000, 1.0000000000, 1.0000000000,
      // 3
      0.171467764, 0.171467764, 0.171467764, 0.171467764, 0.171467764,
      0.171467764, 0.171467764, 0.171467764, 0.274348423, 0.274348423,
      0.274348423, 0.274348423, 0.274348423, 0.274348423, 0.274348423,
      0.274348423, 0.274348423, 0.274348423, 0.274348423, 0.274348423,
      0.438957476, 0.438957476, 0.438957476, 0.438957476, 0.438957476,
      0.438957476, 0.702331962};

  static constexpr double q[]{
      // 1
      0, 0, 0,
      // 2
      -0.5773502692, -0.5773502692, 0.5773502692, 0.5773502692, -0.5773502692,
      0.5773502692, 0.5773502692, 0.5773502692, 0.5773502692, -0.5773502692,
      0.5773502692, 0.5773502692, -0.5773502692, -0.5773502692, -0.5773502692,
      0.5773502692, -0.5773502692, -0.5773502692, 0.5773502692, 0.5773502692,
      -0.5773502692, -0.5773502692, 0.5773502692, -0.5773502692,
      // 3
      -0.774596669, -0.774596669, -0.774596669, 0.774596669, -0.774596669,
      -0.774596669, -0.774596669, 0.774596669, -0.774596669, 0.774596669,
      0.774596669, -0.774596669, -0.774596669, -0.774596669, 0.774596669,
      0.774596669, -0.774596669, 0.774596669, -0.774596669, 0.774596669,
      0.774596669, 0.774596669, 0.774596669, 0.774596669, 0 - 0.774596669,
      -0.774596669, -0.774596669, 0, -0.774596669, 0.774596669, 0, -0.774596669,
      0, 0.774596669, -0.774596669, -0.774596669, -0.774596669, 0, 0.774596669,
      -0.774596669, 0, -0.774596669, 0.774596669, 0, 0.774596669, 0.774596669,
      0, 0, -0.774596669, 0.774596669, -0.774596669, 0, 0.774596669,
      0.774596669, 0, 0.774596669, 0, 0.774596669, 0.774596669, 0, 0,
      -0.774596669, 0, -0.774596669, 0, -0.774596669, 0, 0, 0.774596669, 0, 0,
      0, 0.774596669, 0, 0, 0, 
      0.774596669, 0, 0, 0, 0};

  static constexpr int n[]{1, 8, 27};

  static constexpr int offsets[]{0, 1, 9};
};

} // namespace QuadScheme

#endif